home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_bab_commie_grid.cog < prev    next >
Text File  |  1999-11-15  |  17KB  |  554 lines

  1. # Jones 3D Cog Script
  2. #
  3. # BAB_Courtyard_Grid_1.cog
  4. # [JM]
  5. #
  6. # (C) 1999 LucasArts Entertainment Company LLC. All Rights Reserved
  7. #
  8. # ========================================================================================
  9.  
  10. symbols
  11.  
  12.  
  13. message         startup
  14. message         killed 
  15. message         entered
  16. message         activated
  17. message         crossed
  18.  
  19. message         user0
  20. message         user1
  21. message         user2
  22.  
  23. # ========================== SUBROUTINES ================================
  24. flex            MakeGrid        local
  25. flex            EnableAI        local
  26. flex            DisableAI       local
  27. flex            AfterTurner     local
  28. flex            AfterLeverPull  local
  29. flex            MakeRoom        local
  30.  
  31. # ============================= WORLD REFERENCES ========================
  32.  
  33. sector          EnableGrid      LinkID=1    mask=0x4
  34. sector          DisableGrid     LinkID=2    
  35.  
  36. sector          TurnerCheck     LinkID=3
  37.  
  38. surface         HideCommie00    LinkID=4
  39. surface         WakeCommie00    LinkID=5
  40. surface         WakeCommie01    LinkID=5
  41.  
  42. thing           generator       
  43.  
  44. thing           CommieTeleporter
  45.  
  46. # =========================== MISC LOCAL VARIABLES ======================
  47.  
  48. int         counter                 local
  49. int         CommiesUsingWpnts=0     local
  50. int         IsGridOn=0              local
  51. int         LeverHasBeenPulled=0    local
  52. int         TurnerHasArrived=0      local
  53. int         SetCommieFlags=0        local
  54. #For the above variables:  0 = off and 1 = on
  55.  
  56. int         BackRouteTaken=0        local
  57. int         TheBattleHasStarted=0   local
  58.         
  59. AI          AI_Sniper=com_2Hsniper.ai   local
  60.  
  61. # =========================== CONSTANTS =================================
  62.  
  63. int         MAX_COMMIES_USING_WPNTS=10      local
  64.  
  65. int         CLEAR_WAYPOINTS=60              local
  66. int         NUMBER_OF_WAYPOINTS=27          local
  67.  
  68. int         NUMBER_OF_COMMIES_TOTAL=9       local
  69. int         NUMBER_COMMIES_AFTER_TURNER=2   local
  70. int         NUMBER_OF_PATROLLERS=1          local
  71. int         NUMBER_OF_GUARDS=3              local
  72. int         NUMBER_OF_SNIPERS=1             local
  73. int         NUMBER_OF_LEVER_COMMIES=2       local
  74. int         SNIPER_FLAG=0                   local
  75.   
  76. # =========================== COMMIES ===================================
  77.  
  78. thing       TempCommie              local
  79.  
  80. thing       Sniper00                        mask=0x448  //allow to recieve a killed message from friendly fire and explosions
  81.  
  82. thing       AfterTurnerCommie00             mask=0x448  
  83. thing       AfterTurnerCommie01             mask=0x448
  84.  
  85. thing       PatrollingCommie00              mask=0x448
  86.  
  87. thing       GuardingCommie00                mask=0x448
  88. thing       GuardingCommie01                mask=0x448
  89. thing       GuardingCommie02                mask=0x448
  90.  
  91. thing       AfterLeverCommie00              mask=0x448
  92. thing       AfterLeverCommie01              mask=0x448
  93.  
  94. thing       snipertarget
  95. sector      snipersector
  96.  
  97. thing       player                          local
  98.  
  99. # ==================== WAYPOINTS - GHOST OBJECTS ========================
  100.  
  101. thing       TempWpnt
  102.  
  103. thing       Wpnt00
  104. thing       Wpnt01
  105. thing       Wpnt02
  106. thing       Wpnt03
  107. thing       Wpnt04
  108. thing       Wpnt05
  109. thing       Wpnt06
  110. thing       Wpnt07
  111. thing       Wpnt08
  112. thing       Wpnt09
  113. thing       Wpnt10
  114. thing       Wpnt11
  115. thing       Wpnt12
  116. thing       Wpnt13
  117. thing       Wpnt14
  118. thing       Wpnt15
  119. thing       Wpnt16
  120. thing       Wpnt17
  121. thing       Wpnt18
  122. thing       Wpnt19
  123. thing       Wpnt20
  124. thing       Wpnt21
  125. thing       Wpnt22
  126. thing       Wpnt23
  127. thing       Wpnt24
  128. thing       Wpnt25
  129. thing       Wpnt26
  130.                                                                          
  131. # =======================================================================
  132. end
  133. # =======================================================================
  134. # ============================= CODE ====================================
  135. # =======================================================================
  136. code
  137.  
  138. # =======================================================================
  139. startup:
  140.  
  141.     for(counter = 0; counter < NUMBER_COMMIES_AFTER_TURNER; counter = counter + 1)
  142.     {
  143.         //These guys don't show up until after the turner cutscene
  144.         SetThingFlags(AfterTurnerCommie00[counter], 0x80000);
  145.         SetActorFlags(PatrollingCommie00, 0x400);
  146.         SetActorFlags(PatrollingCommie00, 0x800);
  147.     }
  148.     
  149.     for(counter = 0; counter < NUMBER_OF_SNIPERS; counter = counter + 1)
  150.     {
  151.         if(Sniper00[counter] != -1)
  152.         {
  153.             AISetClass(Sniper00[counter], AI_sniper);
  154.         }            
  155.     }
  156.     
  157.     player=GetLocalPlayerThing();
  158.     
  159.     return;
  160.     
  161. # =======================================================================
  162. killed:
  163.  
  164.     TempCommie = GetSenderRef();
  165.     
  166.     for(counter = 0; counter < (NUMBER_OF_COMMIES_TOTAL - 1); counter = counter + 1)
  167.     {
  168.         if(AfterTurnerCommie00[counter] == TempCommie)
  169.         {
  170.             AfterTurnerCommie00[counter] = -1;
  171.             
  172.             if(TheBattleHasStarted == 1)
  173.             {
  174.                 CommiesUsingWpnts = CommiesUsingWpnts - 1;
  175.                 PrintInt(CommiesUsingWpnts);
  176.             }
  177.         }            
  178.     }
  179.     
  180.     if(TempCommie == Sniper00)
  181.     {
  182.         Sniper00 = -1;
  183.         SNIPER_FLAG=1;
  184.     }
  185.  
  186.     return;
  187.     
  188. # =======================================================================
  189. entered:
  190.  
  191.     if(GetSenderID() == 1 && IsGridOn == 0)
  192.     { 
  193.         Call MakeGrid;
  194.         IsGridOn = 1;
  195.     }
  196.     else if(GetSenderID() == 2 && IsGridOn == 1)
  197.     {
  198.         Call DisableAI;
  199.         IsGridOn = 0;
  200.     }
  201.     
  202.     else if(GetSenderID() == 3 && TurnerHasArrived == 0) //Start of Turner Introduction cinematic
  203.     {
  204.         Call DisableAI;
  205.     }
  206.     
  207.     if ((GetSenderRef() == snipersector) && (SNIPER_FLAG == 0) && (GetSourceRef() == player))        
  208.     {
  209.         TeleportThing(sniper00, snipertarget);
  210.     }
  211.  
  212.     return;
  213.     
  214. # =======================================================================
  215. activated:
  216.     
  217.     
  218.     if(GetSenderRef() == Generator && LeverHasBeenPulled == 0)
  219.     {   
  220.         SetCommieFlags = 1;
  221.         Call DisableAI;
  222.     }
  223.         
  224.     return;
  225.         
  226. # =======================================================================
  227. crossed:
  228.     
  229.     if(PatrollingCommie00 == -1) return;
  230.      
  231.     if(GetSenderID() == 4)
  232.     {
  233.         TeleportThing(PatrollingCommie00, CommieTeleporter);
  234.         AIEnableInstinct(PatrollingCommie00, "roam", 0);
  235.         AISetCutsceneMode(PatrollingCommie00);
  236.     }
  237.     
  238.     if(GetSenderID() == 5)
  239.     {
  240.         AIClearCutsceneMode(PatrollingCommie00);        
  241.         AIEnableInstinct(PatrollingCommie00, "roam", 1);
  242.         ClearActorFlags(PatrollingCommie00, 0x800);
  243.         ClearActorFlags(PatrollingCommie00, 0x400);
  244.         
  245.         BackRouteTaken = 1;
  246.     }
  247.  
  248.     return;
  249.     
  250. # =======================================================================
  251.  
  252.  
  253. //Recieves this message from BAB_CourtyardCommie. cog.  Expects all commies to taken out of cutscene mode
  254. user0:
  255.  
  256.     
  257.     Call EnableAI;
  258.     TheBattleHasStarted = 1;
  259.  
  260.     return;
  261.  
  262. # =======================================================================
  263. //Recieves a message from BAB_GeneratorPull.cog 
  264. user1:
  265.  
  266.     Call AfterLeverPull;
  267.     Call EnableAI;
  268.     
  269.     LeverHasBeenPulled = 1;
  270.  
  271.     return;
  272.    
  273. # =======================================================================
  274. //Revieves a message from the Turner introduction cutscene 01_BAB_Cinematic3.cog
  275. user2:
  276.  
  277.     Call AfterTurner;
  278.     Call EnableAI;
  279.     
  280.     TurnerHasArrived = 1;
  281.     
  282.     return;
  283.     
  284. # =======================================================================
  285. # =========================== SUBROUTINES ===============================
  286. # =======================================================================
  287.  
  288. EnableAI:
  289.  
  290.     //Guarding Commies                              
  291.     for(counter = 0; counter < NUMBER_OF_GUARDS; counter = counter + 1)
  292.     {
  293.         if(GuardingCommie00[counter] != -1)
  294.         {
  295.             AIClearCutsceneMode(GuardingCommie00[counter]);
  296.             AISetInstinctWpntMode(GuardingCommie00[counter]);
  297.             CommiesUsingWpnts = CommiesUsingWpnts + 1;
  298.             //PrintInt(CommiesUsingWpnts);
  299.             
  300.             if(SetCommieFlags == 1);
  301.             {
  302.                 ClearThingFlags(GuardingCommie00[counter], 0x80000);
  303.             }                                                       
  304.         }            
  305.     }
  306.     
  307.     //Roaming Commies                               
  308.     for(counter = 0; counter < NUMBER_OF_PATROLLERS; counter = counter + 1)
  309.     {
  310.         if(PatrollingCommie00[counter] != -1)
  311.         {
  312.             AIClearCutsceneMode(PatrollingCommie00[counter]);
  313.             AISetInstinctWpntMode(PatrollingCommie00[counter]);
  314.             CommiesUsingWpnts = CommiesUsingWpnts + 1;
  315.             //PrintInt(CommiesUsingWpnts);
  316.             
  317.             if(BackRouteTaken == 1)
  318.             {
  319.                 AIEnableInstinct(PatrollingCommie00[counter], "roam", 1);
  320.             }
  321.             
  322.             if(SetCommieFlags == 1);
  323.             {
  324.                 ClearThingFlags(PatrollingCommie00[counter], 0x80000);
  325.             }                                   
  326.         }
  327.     }
  328.     
  329.     //Snipers                                       
  330.                     
  331.     
  332.     if(LeverHasBeenPulled == 1)
  333.     {
  334.         for(counter = 0; counter < NUMBER_OF_LEVER_COMMIES; counter = counter + 1)
  335.         {
  336.             if(AfterLeverCommie00[counter] != -1)
  337.             {
  338.                 AIClearCutsceneMode(AfterLeverCommie00[counter]);
  339.                 AISetInstinctWpntMode(AfterLeverCommie00[counter]);
  340.                 CommiesUsingWpnts = CommiesUsingWpnts + 1;
  341.                 //PrintInt(CommiesUsingWpnts);
  342.                 
  343.                 if(SetCommieFlags == 1);
  344.                 {
  345.                     ClearThingFlags(AfterLeverCommie00[counter], 0x80000);
  346.                 }                                   
  347.             }
  348.                 
  349.         }
  350.     }           
  351.     
  352.     return;
  353.     
  354. # =======================================================================
  355. DisableAI:    
  356.  
  357.     //Guarding Commies                              
  358.     for(counter = 0; counter < NUMBER_OF_GUARDS; counter = counter + 1)
  359.     {
  360.         if(GuardingCommie00[counter] != -1)
  361.         {
  362.             AISetCutsceneMode(GuardingCommie00[counter]);
  363.             CommiesUsingWpnts = CommiesUsingWpnts - 1;
  364.             //PrintInt(CommiesUsingWpnts);
  365.             
  366.             if(SetCommieFlags == 1);
  367.             {
  368.                 SetThingFlags(GuardingCommie00[counter], 0x80000);
  369.             }
  370.         }
  371.     }
  372.     
  373.     //Roaming Commies                               
  374.     for(counter = 0; counter < NUMBER_OF_PATROLLERS; counter = counter + 1)
  375.     {
  376.         if(PatrollingCommie00[counter] != -1)
  377.         {
  378.             AISetCutsceneMode(PatrollingCommie00[counter]);
  379.             CommiesUsingWpnts = CommiesUsingWpnts - 1;
  380.             //PrintInt(CommiesUsingWpnts);
  381.             
  382.             if(BackRouteTaken == 1)
  383.             {
  384.                 AIEnableInstinct(PatrollingCommie00[counter], "roam", 0);
  385.             }
  386.             
  387.             if(SetCommieFlags == 1);
  388.             {
  389.                 SetThingFlags(PatrollingCommie00[counter], 0x80000);
  390.             }
  391.         }
  392.     }
  393.     
  394.     //Commies that show up after the turner cutscene
  395.     if(TurnerHasArrived == 1)
  396.     {
  397.         for(counter = 0; counter < NUMBER_COMMIES_AFTER_TURNER; counter = counter + 1)
  398.         {
  399.             if(AfterTurnerCommie00[counter] != -1)
  400.             {
  401.                 AIEnableInstinct(AfterTurnerCommie00[counter], "roam", 0);
  402.                 AISetCutsceneMode(AfterTurnerCommie00[counter]);
  403.                 CommiesUsingWpnts = CommiesUsingWpnts - 1;
  404.                 //PrintInt(CommiesUsingWpnts);
  405.                 
  406.                 if(SetCommieFlags == 1);
  407.                 {
  408.                     SetThingFlags(AfterTurnerCommie00[counter], 0x80000);
  409.                 }
  410.             }
  411.         }
  412.     }
  413.     
  414.     if(LeverHasBeenPulled == 1)
  415.     {
  416.         for(counter = 0; counter < NUMBER_OF_LEVER_COMMIES; counter = counter + 1)
  417.         {
  418.             if(AfterLeverCommie00[counter] != -1)
  419.             {
  420.                 AIClearInstinctwpntMode(AfterLeverCommie00[counter]);
  421.                 AISetCutsceneMode(AfterLeverCommie00[counter]);
  422.                 CommiesUsingWpnts = CommiesUsingWpnts - 1;
  423.                 //PrintInt(CommiesUsingWpnts);
  424.                 
  425.                 if(SetCommieFlags == 1);
  426.                 {
  427.                     SetThingFlags(AfterLeverCommie00[counter], 0x80000);
  428.                 }                                                       
  429.             }
  430.         }
  431.     }                                  
  432.     
  433.     return;
  434.  
  435. # =======================================================================
  436. AfterTurner:
  437.  
  438.     Sleep(1.0);
  439.     
  440.     for(counter = 0; counter < NUMBER_COMMIES_AFTER_TURNER; counter = counter + 1)
  441.     {   
  442.         if(CommiesUsingWpnts >= 10)
  443.         {
  444.             Call MakeRoom;
  445.         }
  446.         
  447.         ClearThingFlags(AfterTurnerCommie00[counter], 0x80000);
  448.         AISetInstinctWpntMode(AfterTurnerCommie00[counter]);
  449.         AIEnableInstinct(AfterTurnerCommie00[counter], "roam", 1);
  450.         AIWpntHuntTarget(AfterTurnerCommie00[counter], 2.0, 0.0);
  451.         CommiesUsingWpnts = CommiesUsingWpnts + 1;
  452.         //PrintInt(CommiesUsingWpnts);
  453.         sleep(1.0);
  454.     }                                                             
  455.  
  456.     return;
  457.     
  458. # =======================================================================
  459. AfterLeverPull:
  460.  
  461.     for(counter = 0; counter < NUMBER_OF_LEVER_COMMIES; counter = counter + 1)
  462.     {   
  463.         AISetInstinctWpntMode(AfterLeverCommie00[counter]);
  464.         CommiesUsingWpnts = CommiesUsingWpnts + 1;
  465.         //PrintInt(CommiesUsingWpnts);
  466.     }
  467.     
  468.     for(counter = 0; counter < NUMBER_OF_GUARDS; counter = counter + 1)
  469.     {
  470.         if(GuardingCommie00[counter] != -1)
  471.         {
  472.             AIEnableInstinct(GuardingCommie00[counter], "roam", 1);
  473.             
  474.             if((RandBetween(0, 3) == 3)) 
  475.             {
  476.                 AIWpntHuntTarget(GuardingCommie00[counter], 2.0, 0.0);
  477.             }
  478.         }
  479.     }
  480.  
  481.     return;
  482.  
  483. # =======================================================================
  484. //It is possible for their to be 10 commies using the grid by this point, this subroutine clears as many as needed
  485. MakeRoom:
  486.  
  487.     for(counter = 0; counter < NUMBER_OF_GUARDS; counter = counter + 1)
  488.     {
  489.         if(CommiesUsingWpnts == (MAX_COMMIES_USING_WPNTS - NUMBER_COMMIES_AFTER_TURNER)) return;
  490.         
  491.         if(GuardingCommie00[counter] != -1)
  492.         {
  493.             AIClearInstinctWpntMode(GuardingCommie00[counter]);
  494.             AIEnableInstinct(GuardingCommie00[counter], "roam", 0);
  495.             CommiesUsingWpnts = CommiesUsingWpnts - 1;
  496.             //PrintInt(CommiesUsingWpnts);
  497.         }
  498.     }
  499.     
  500.     return;
  501.     
  502. # =======================================================================
  503. MakeGrid:
  504.     
  505.     for(counter = 0; counter < CLEAR_WAYPOINTS; counter = counter + 1)
  506.     {
  507.         //For loop to clear any pre-existing waypoints
  508.         AISetWpnt(TempWpnt, counter);
  509.     }
  510.     
  511.     for(counter = 0; counter < NUMBER_OF_WAYPOINTS; counter = counter + 1)
  512.     {
  513.         AISetWpnt(Wpnt00[counter], counter);
  514.     }
  515.     
  516.     AIConnectWpnts(0, 1);
  517.     AIConnectWpnts(1, 2);
  518.     AIConnectWpnts(1, 5);
  519.     AIConnectWpnts(2, 3);
  520.     AIConnectWpnts(2, 4);
  521.     AIConnectWpnts(3, 24);
  522.     AIConnectWpnts(4, 5);
  523.     AIConnectWpnts(4, 25);
  524.     AIConnectWpnts(5, 25);
  525.     AIConnectWpnts(5, 24);
  526.     AIConnectWpnts(6, 7);
  527.     AIConnectWpnts(6, 24);
  528.     AIConnectWpnts(6, 25);
  529.     AIConnectWpnts(7, 8);
  530.     AIConnectWpnts(8, 9);
  531.     AIConnectWpnts(9, 10);
  532.     AIConnectWpnts(10, 11);
  533.     AIConnectWpnts(10, 13);
  534.     AIConnectWpnts(10, 14);
  535.     AIConnectWpnts(11, 12);
  536.     //AIConnectWpnts(14, 15); //Commented out... 1/2 meter ledge prevents movement
  537.     //AIConnectWpnts(14, 16); //Commented out... 1/2 meter ledge prevents movement
  538.     AIConnectWpnts(16, 17);
  539.     AIConnectWpnts(17, 18);
  540.     AIConnectWpnts(17, 19);
  541.     AIConnectWpnts(19, 20);
  542.     AIConnectWpnts(20, 21);
  543.     AIConnectWpnts(20, 22);
  544.     AIConnectWpnts(22, 23);
  545.     
  546.     AIConnectWpnts(25, 26);
  547.     
  548.     return;
  549.     
  550. # =======================================================================
  551.  
  552. end
  553.